//: C04:CppLibTest.cpp
//{L} CppLib
// Test of C++ library
#include "CppLib.h"
#include "../require.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    Stash intStash;
    intStash.initialize(sizeof(int));
    for(int i = 0; i < 100; i++)
    {
        intStash.add(&i);
    }
    for(int j = 0; j < intStash.count(); j++)
    {
        cout << "intStash.fetch(" << j <<") = "
             << *(int*)intStash.fetch(j)
             << '\n';
    }
    // Holds 80-character strings:
    Stash stringStash;
    const int bufsize = 80;
    stringStash.initialize(sizeof(char) * bufsize);
    ifstream in("CppLibTest.cpp");
    assure(in, "CppLibTest.cpp");
    string line;
    while(getline(in, line))
    {
        stringStash.add(line.c_str());
    }

    int k = 0;
    char *cp;
    while((cp = (char*)stringStash.fetch(k++)) != 0)
    {
        cout << "stringStash.fetch(" << k <<") = "
             << cp << '\n';
    }

    intStash.cleanup();
    stringStash.cleanup();
    return 0;
}
